﻿using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using STT.Business;
using STT.Entities;
using STT.Layer.Connection;
using System.IO;
using System.Collections.Generic;
using System.Data.OleDb;

namespace STT.Admin.WebForms
{
    public partial class ucKhoaHoc : System.Web.UI.UserControl
    {
        ToolBox tb = new ToolBox();
        public bool chonSuaClick;
        bool KiemTraRong;
        bool KiemTraTonTai;
        bool KiemTraTG;
        List<string> error;
        string count;

        protected void Page_Load(object sender, EventArgs e)
        {
            LoadKhoaHoc();
            
        }

        void LoadKhoaHoc()
        {
            gvKhoaHoc.AutoGenerateColumns = false;
            gvKhoaHoc.DataSource = tb.GetDataTableByNguoiTao("TbKhoaHoc_SelectAll", Session["TenDN"].ToString());

            gvKhoaHoc.DataBind();
        }
       
        void ThongBao(string Loi)
        {
            ScriptManager.RegisterClientScriptBlock(this, GetType(), "Thông báo!", "<script>alert('" + Loi + "')</script>", false);
        }
        protected void gvKhoaHoc_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gvKhoaHoc.EditIndex = e.NewEditIndex;
            gvKhoaHoc.DataBind();
        }

        protected void gvKhoaHoc_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                int MaKhoaHoc = int.Parse(gvKhoaHoc.DataKeys[e.RowIndex].Value.ToString());

                BTbKhoaHoc.Delete(MaKhoaHoc);
                LoadKhoaHoc();
                Session["action"] = 3;
            }
            catch
            {
                ThongBao("Dữ liệu liên quan đến Khóa học này vẫn tồn tại, vui lòng kiểm tra lại dữ liệu!");
            }
        }

        protected void gvKhoaHoc_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gvKhoaHoc.EditIndex = -1;
            gvKhoaHoc.DataBind();
        }

        protected void lbThemMoi_Click(object sender, EventArgs e)
        {
            
        }

        protected void lbXuatDuLieu_Click(object sender, EventArgs e)
        {

        }

        protected void lbXoaTat_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < gvKhoaHoc.Rows.Count; i++)
                {
                    CheckBox cbChon = (CheckBox)gvKhoaHoc.Rows[i].Cells[0].FindControl("cbChon");
                    if (cbChon != null && cbChon.Checked)
                    {
                        BTbKhoaHoc.Delete(int.Parse(gvKhoaHoc.DataKeys[i].Value.ToString()));
                    }
                }

                LoadKhoaHoc();
                Session["action"] = 3;
            }
            catch
            {
                ThongBao("Dữ liệu liên quan đến một số Khóa học vẫn tồn tại, vui lòng kiểm tra lại dữ liệu!");
            }
        }

        // Phân trang
        protected void gvKhoaHoc_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvKhoaHoc.PageIndex = e.NewPageIndex;
            gvKhoaHoc.DataBind();
        }

        protected void gvKhoaHoc_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "ChonSua")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                string key = gvKhoaHoc.DataKeys[index].Value.ToString();

                Response.Redirect("~/Admin/Default.aspx?idpage=tmkh&idkh=" + key);
             }
            else if (e.CommandName == "CreateClass")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                string key = gvKhoaHoc.DataKeys[index].Value.ToString();
                Response.Redirect("~/Admin/Default.aspx?idpage=qllh&key=" + key);
            }
        }

        protected void btSua_Click(object sender, EventArgs e)
        {
           
            LoadKhoaHoc();
        }

        protected void btSearch_Click(object sender, ImageClickEventArgs e)
        {
            
            gvKhoaHoc.DataSource = BTbKhoaHoc.SearchTenKhoaHoc(new ETbKhoaHoc
            {
                TenKhoaHoc = txtTimKiem.Text,
                NguoiTao = Session["TenDN"].ToString()
            });
            
            gvKhoaHoc.DataBind();            
        }
      
        private void XuatDuLieuRaWord(GridView MyGridview)
        {
            gvKhoaHoc.Columns[2].Visible = false;
            gvKhoaHoc.Columns[0].Visible = false;
            gvKhoaHoc.Columns[6].Visible = false;
            gvKhoaHoc.Columns[7].Visible = false;
            gvKhoaHoc.Columns[8].Visible = false;
            Response.Clear();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment;filename=KhoaHoc.doc");
            Response.Charset = "";
            Response.ContentType = "application/vnd.ms-word ";
            StringWriter sw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(sw);
            // Bỏ phân trang - Nếu chỉ muỗn Export Trang hiện hành thì chọn =true
            MyGridview.AllowPaging = false;
            MyGridview.DataBind();
            MyGridview.RenderControl(hw);
            Response.Output.Write(sw.ToString());
            Response.Flush();
            Response.End();
        }

        protected void lbXuatExcel_Click(object sender, EventArgs e)
        {
            XuatDuLieuRaWord(gvKhoaHoc);
        }

        protected void btThemExcel_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                error = new List<string>();
                string filename = FileUpload1.FileName;
                string[] str = FileUpload1.FileName.Split('.');
                string ten = str[0];
                string duoi = str[1];
                if (duoi == "xls" || duoi == "xlsx")
                {
                    string path = string.Concat(Server.MapPath("~/uploads/files/" + DateTime.Now.ToString("yyyymmddhhmmssfff") + ten + "." + duoi));
                    FileUpload1.PostedFile.SaveAs(path);
                    OleDbConnection oledbcon = new OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=" + path + ";extended properties=excel 12.0;");
                    OleDbCommand command = new OleDbCommand("select * from [sheet1$]", oledbcon);
                    OleDbDataAdapter objadapter1 = new OleDbDataAdapter(command);
                    oledbcon.Open();
                    DataTable dt = new DataTable();
                    DataTable dt1 = BTbKhoaHoc.SelectAll();
                    objadapter1.Fill(dt);
                    if (dt.Rows.Count > 0)
                    {
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            KiemTraRong = true;
                            KiemTraTonTai = true;
                            KiemTraTG = true;
                            if (dt.Rows[i][1].ToString() == "" || dt.Rows[i][2].ToString() == "" || dt.Rows[i][4].ToString() == "")
                            {
                                KiemTraRong = false;
                                error.Add("Không được bỏ trống tên, nội dung, thời gian bắt đầu của khóa học thứ " + dt.Rows[i][0].ToString() + "!");
                                continue;
                            }
                            for (int j = 0; j < dt1.Rows.Count; j++)
                            {
                                KiemTraTonTai = true;
                                if (dt.Rows[i][1].ToString().ToLower().Trim() == dt1.Rows[j][1].ToString().ToLower().Trim() &&
                                    dt.Rows[i][4].ToString().ToLower().Trim() == dt1.Rows[j][4].ToString().ToLower().Trim() &&
                                    dt.Rows[i][7].ToString().ToLower().Trim() == dt1.Rows[j][7].ToString().ToLower().Trim())
                                {
                                    KiemTraTonTai = false;
                                    error.Add("Khóa học thứ: " + dt.Rows[i][0].ToString() + " do: " + dt.Rows[i][7].ToString() + " tạo đã tồn tại!");
                                    break;
                                }

                            }
                            
                            if (KiemTraRong && KiemTraTonTai)
                            {
                                try
                                {
                                    if (dt.Rows[i][5].ToString() == "")
                                    {
                                        BTbKhoaHoc.InsertNull(new ETbKhoaHoc
                                        {
                                            TenKhoaHoc = dt.Rows[i][1].ToString(),
                                            NoiDung = dt.Rows[i][2].ToString(),
                                            DiaDiemHoc = dt.Rows[i][3].ToString(),
                                            ThoiGianBatDau = DateTime.Parse(DateTime.Parse(dt.Rows[i][4].ToString()).ToString("MM-dd-yyyy")),
                                            FileDinhKem = "",
                                            NguoiTao = Session["TenDN"].ToString()
                                        });
                                    }
                                    else
                                    {
                                        int sosanh = DateTime.Compare(DateTime.Parse(DateTime.Parse(dt.Rows[i][4].ToString()).ToString("MM-dd-yyyy")), DateTime.Parse(DateTime.Parse(dt.Rows[i][5].ToString()).ToString("MM-dd-yyyy")));
                                        if (sosanh == 0 || sosanh > 0)
                                        {
                                            KiemTraTG = false;
                                            error.Add("Thời gian bắt đầu và kết thúc của khóa học thứ " + dt.Rows[i][0].ToString() + " không hợp lý!");
                                            continue;
                                        }
                                        BTbKhoaHoc.Insert(new ETbKhoaHoc
                                        {
                                            TenKhoaHoc = dt.Rows[i][1].ToString(),
                                            NoiDung = dt.Rows[i][2].ToString(),
                                            DiaDiemHoc = dt.Rows[i][3].ToString(),
                                            ThoiGianBatDau = DateTime.Parse(DateTime.Parse(dt.Rows[i][4].ToString()).ToString("MM-dd-yyyy")),
                                            ThoiGianKetThuc = DateTime.Parse(DateTime.Parse(dt.Rows[i][5].ToString()).ToString("MM-dd-yyyy")),
                                            FileDinhKem = "",
                                            NguoiTao = Session["TenDN"].ToString()
                                        });
                                    }
                                    
                                }
                                catch (Exception ex)
                                {
                                    Response.Write("");
                                }
                            }
                        }
                        for (int i = 0; i < error.Count; i++)
                        {
                            count += " + " + error[i].ToString() + "<br/>";
                        }
                        if (error.Count > 0)
                        {
                            plError.Visible = true;
                            lbError.Text = "Bạn kiểm tra lại thông tin Khóa học:" + "<br/>" + count;
                        }
                    }
                    oledbcon.Close();
                }
                else
                {
                    ThongBao("Tệp tin không đúng định dạng Excel!");
                }
            }
            else
            {
                ThongBao("Bạn chưa tải tệp tin!");
            }
            LoadKhoaHoc();
            Session["action"] = 1;

        }
          
    }
}